<?php
/**
 * Implemente un objet html
 * 
 * Cette classe sert a retourner ce genre de balise:
 * <balise att1='att1' att='att2' />
 */
class BphItem{
	/**
	 * string: Le nom de la balise ('div', 'a', ...)
	 */
	protected $_balise = '';
	
	/**
	 * array: Les attributs de la balise ('href'=>'index.php', ...)
	 */
	public $_attributs = Array();

	/**
	 * Constructeur de la classe
	 * @param string	$pbalise	@link $_balise
	 */
	public function __Construct($pbalise) {
		$this->_attributs = Array();
		$this->_balise = $pbalise;
	}

	/**
	 * Ajoute un attribut a la balise ('href'=>'index.php' par exemple)
	 * @param string	$pkey	
	 * @param string	$pvalue	
	 */	
	public function AddAttribut($pkey, $pvalue) {
		$this->_attributs[$pkey] = $pvalue;
	}

	/**
	 * Renvoie la chaine html des attributs de la balise (href="index.php")
	 */
	protected function _StrAttribut() {
		if ( $this->_attributs ) {
			$retour = Array();
			foreach ($this->_attributs as $key=>$value ) {
				if (is_bool($value)) {
					if ($value)
						$retour[] = "$key";
				} else
					if ($value!=='')
						$retour[] = "$key=\"$value\"";
			}
			$space = '';
			if (count($retour)>0)
				$space = ' ';
			return $space.implode(' ', $retour);
		}
		return '';
	}
	
	/**
	 * Formate une portion de code
	 * 
	 * Renvoie un texte avec eventuellement
	 * une indentation et un retour a la ligne
	 */
	protected function _StrLine ($plevel, $ptext, $pbegin=TRUE, $pend=TRUE, $pplain_content=False){
		$begin = ($pbegin)? str_repeat(BPH_INDENT,$plevel): '';
		$end = ($pend)? BPH_RETURN: '';
		if ($pplain_content)
			$text = $ptext;
		else
			$text = nl2br($ptext);
		return $begin.$text.$end;
	}
		
	/**
	 * Renvoie le code html de l'item
	 * @param string	$plevel		niveau d'indentation
	 */	
	public function Code ($level=0) {
		$attribut = $this->_StrAttribut();
		$code = $this->_StrLine($level, "<{$this->_balise}$attribut/>");
		return $code;
	}
}// class BphItem
?>
